package day21.zhiyou100;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;


// 服务端--->先启动服务端
class ServerTCP{
    public static void main(String[] args) throws Exception {
        // 服务端  ServerSocket
        System.out.println("服务器端已启动，等待客户端连接-----");
        ServerSocket server = new ServerSocket(8088);
        // 接收客户端发送的信息
        // accept() 用来接收一个客户端
        Socket socket = server.accept();
        System.out.println("接收到一个客户端,开始接收信息：");
        // 接收服务器端发送的信息
        InputStream is = socket.getInputStream();
        byte[] data = new byte[1024];
        int len = 0;
        while ((len = is.read(data)) != -1) {
            System.out.println("从客户端接收到的信息为：" + new String(data,0,len));
        }

        // 在服务器端也可以发送信息
        System.out.println("信息已接收完毕，开始往客户端发送信息:");
        OutputStream os = socket.getOutputStream();
        os.write("我收到了客户端发送的信息!!!".getBytes());
        socket.shutdownOutput();
        server.close();
    }
}

// 客户端  让客户端去连接服务端
public class ClientTCP {
    public static void main(String[] args) throws Exception {
        // Socket 类创建客户端
        // InetAddress
        System.out.println("客户端已经启动，正在连接服务端。。。");
        //InetAddress address = InetAddress.getLocalHost();
        Socket socket = new Socket("127.0.0.1",8088);
        // 客户端可以给服务端发送信息  也可以接收服务端发送的信息
        System.out.println("服务端已经连接成功，开始往服务器端发送信息：");
        OutputStream os = socket.getOutputStream();
        String sendContent = "你好,服务器";
        // 往服务器端写数据
        os.write(sendContent.getBytes());
        // 结束标志
        socket.shutdownOutput();
        //socket.shutdownInput();
        //os.close();
        // 接收服务器端发送的信息
        System.out.println("客户端信息以发送完毕，开始接收服务器端的信息：");
        InputStream is = socket.getInputStream();
        byte[] data = new byte[1024];
        int len = 0;
        while ((len = is.read(data)) != -1) {
            String receiveContent = new String(data, 0, len);
            System.out.println("从服务器端接收的信息为：" +receiveContent);
        }
        //socket.shutdownInput();
        socket.close();

    }
}
